/**
 * Electron Vite 构建配置文件
 * 
 * 配置 Electron 应用的三个主要部分：
 * - main: 主进程构建配置
 * - preload: 预加载脚本构建配置  
 * - renderer: 渲染进程构建配置
 * 
 * 基于 Vite 构建工具，提供快速的开发体验和优化的生产构建
 */

import { resolve } from 'path'
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  /**
   * 主进程配置
   * 构建 src/main 下的 TypeScript 代码
   */
  main: {
    plugins: [externalizeDepsPlugin()]  // 外部化 node_modules 依赖
  },
  
  /**
   * 预加载脚本配置
   * 构建 src/preload 下的 TypeScript 代码
   */
  preload: {
    plugins: [externalizeDepsPlugin()]  // 外部化 node_modules 依赖
  },
  
  /**
   * 渲染进程配置
   * 构建 src/renderer 下的 Vue 应用
   */
  renderer: {
    resolve: {
      alias: {
        // 设置路径别名，方便在渲染进程中导入模块
        '@renderer': resolve('src/renderer/src')
      }
    },
    plugins: [vue()],  // Vue 3 支持插件
    
    // 开发服务器配置
    server: {
      // 设置自定义CSP头，允许blob和data URL
      headers: {
        'Content-Security-Policy': 
          "default-src 'self' 'unsafe-inline' 'unsafe-eval' blob: data: http: https:; " +
          "media-src 'self' blob: data: http: https:; " +
          "img-src 'self' blob: data: http: https:; " +
          "connect-src 'self' blob: data: http: https: ws: wss:; " +
          "script-src 'self' 'unsafe-inline' 'unsafe-eval'; " +
          "style-src 'self' 'unsafe-inline';"
      }
    },
    
    // 构建配置
    build: {
      // 确保生产环境也支持blob URL
      rollupOptions: {
        output: {
          // 不限制asset文件名长度
          assetFileNames: (assetInfo) => {
            const info = assetInfo.name?.split('.') || ['unknown', 'unknown']
            const ext = info[info.length - 1]
            return `assets/[name].[hash][extname]`
          }
        }
      }
    }
  }
})
